package com.xiaoyao.myframeapp.utils.File;

import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.text.TextUtils;

import com.xiaoyao.myframeapp.utils.L;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @Author xiaoyao
 * @Email xiao80206040@qq.com
 * @Explain
 * @Created by Administrator on 2017/5/18 0018 09:55
 */
public class newFile {
    //TODO 创建文件夹
    public void File(String s) {
        File destDir = new File(s);
        if (!destDir.exists()) {
            destDir.mkdirs();
        }
    }

    //TODO 删除文件夹
    public void deleteFile(File file) {
        if (file.exists()) { // 判断文件是否存在
            if (file.isFile()) { // 判断是否是文件
                file.delete(); // delete()方法 你应该知道 是删除的意思;
            } else if (file.isDirectory()) { // 否则如果它是一个目录
                File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
                for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
                    this.deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
                }
            }
            file.delete();
        } else {
            L.i("文件不存在！" + "\n");
        }
    }

    //TODO 删除 指定文件夹下面的 文件
    public static void DeleteFile(
            String uri,
            String img_image_file) {
        if (TextUtils.isEmpty(uri)) {
            return;
        }
        if (uri.contains(img_image_file)) {

            File file = new File(uri);
            if (file.isFile() && file.exists()) {
                file.delete();
            }
        }
    }


    //TODO Uri》》fileName
    public String getRealPath(Uri fileUrl, Context context) {
        String fileName = null;
        Uri filePathUri = fileUrl;
        if (fileUrl != null) {
            if (fileUrl.getScheme().toString().compareTo("content") == 0) {
                // content://开头的uri
                Cursor cursor = context.getContentResolver().query(fileUrl, null, null,
                        null, null);
                if (cursor != null && cursor.moveToFirst()) {
                    int column_index = cursor.getColumnIndexOrThrow("_data");
                    fileName = cursor.getString(column_index); // 取出文件路径
                    if (!fileName.startsWith("/mnt")) {
                        // 检查是否有”/mnt“前缀

                        fileName = "/mnt" + fileName;
                    }
                    cursor.close();
                }
            } else if (fileUrl.getScheme().compareTo("file") == 0) {
                // file:///开头的uri
                fileName = filePathUri.toString();
                fileName = filePathUri.toString().replace("file://", "");
                // 替换file://
                if (!fileName.startsWith("/mnt")) {
                    // 加上"/mnt"头
//                    fileName = "/mnt" + fileName;
                }
            }
        }
        return fileName;
    }

    /**
     *
     * @param fromFile 被复制的文件
     * @param toFile 复制的目录文件
     * @param rewrite 是否重新创建文件
     *
     * <p>文件的复制操作方法
     */
    public static void CopyFile(File fromFile, File toFile,boolean rewrite ){

        if(!fromFile.exists()){
            return;
        }
        if(!fromFile.isFile()){
            return;
        }
        if(!fromFile.canRead()){
            return;
        }
        if(!toFile.getParentFile().exists()){
            toFile.getParentFile().mkdirs();
        }
        if(toFile.exists() && rewrite){
            toFile.delete();
        }


        try {
            FileInputStream fosfrom = new FileInputStream(fromFile);
            FileOutputStream fosto = new FileOutputStream(toFile);

            byte[] bt = new byte[1024];
            int c;
            while((c=fosfrom.read(bt)) > 0){
                fosto.write(bt,0,c);
            }
            //关闭输入、输出流
            fosfrom.close();
            fosto.close();


        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
